#!/usr/bin/env python
#  Copyright (c) 2010
#  The Regents of the University of Michigan
#  All Rights Reserved

#  Permission is granted to use, copy, create derivative works, and
#  redistribute this software and such derivative works for any purpose,
#  so long as the name of the University of Michigan is not used in
#  any advertising or publicity pertaining to the use or distribution
#  of this software without specific, written prior authorization. If
#  the above copyright notice or any other identification of the
#  University of Michigan is included in any copy of any portion of
#  this software, then the disclaimer below must also be included.

#  This software is provided as is, without representation or warranty
#  of any kind either express or implied, including without limitation
#  the implied warranties of merchantability, fitness for a particular
#  purpose, or noninfringement.  The Regents of the University of
#  Michigan shall not be liable for any damages, including special,
#  indirect, incidental, or consequential damages, with respect to any
#  claim arising out of or in connection with the use of the software,
#  even if it has been or is hereafter advised of the possibility of
#  such damages.

import log_parser
import bencode
import sys

def main(argv):
  for log in argv[1:]:
    print log
    count = 0
    integers = 0
    short_integers=0
    lst = log_parser.get_stores(log)
    total = 0
    for (key, time, version, value) in lst:
      total += 1
      if all(s.isdigit() for s in value):
        integers += 1
        if len(value) <= 5:
          short_integers += 1
      if bencode.simple_is_bencoded(value) and value != 'de':
        count += 1
        print value
    if total:
      print '# Bencoded:', count
      print 'Fraction:', float(count)/total
      print 'Fraction of non-ASCII-encoded integers:', float(count)/ (total-integers)
      print 'Fraction of integers that are short:', float(short_integers)/integers
if __name__ == '__main__':
  main(sys.argv)
